/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package compilador.AnalisadorLexico;

/**
 *
 * @author Leles
 */
public class Atomo {

public enum TokenType {
    TRANSICAO_VAZIA,
    ID, VAR, CONST, FUNC, NUMERO, STRING,
    TIPO,
    BREAK,
    ASPAS_ABRE, ASPAS_FECHA, CHAR_NL, CHAR_TAB, CHAR_BARRAINVERTIA, 
    PROGRAM, NL, EOF, BEGIN, END, FUNCTION, PARENTESES_ABRE, PARENTESES_FECHA,
    RETURNS, DECLARE, 
    VIRGULA, PONTOEVIRGULA,
    OP_ATRIBUICAO, DOISPOINTOS,
    OP_ALG_MAIS, OP_ALG_MENOS, OP_ALG_MULT, OP_ALG_DIV,
    OP_BOOL_IGUAL, OP_BOOL_DIF, OP_BOOL_MAIOR, OP_BOOL_MENOR, OP_BOOL_MAIORIGUAL, OP_BOOL_MENORIGUAL,
    OP_BOOL_E, OP_BOOL_OU,
    IF, THEN, ELSE, SWITCH, CASE, WHILE, DO, LOOP, FOR,
    INPUT, OUT,
    COMENTARIO_LINHA, COMENTARIO_BLOCO_ABRE, COMENTARIO_BLOCO_FECHA,
    FIM_ARQUIVO
}

public static Object [][] PalavrasReservadas = { 
    {"PROGRAM", TokenType.PROGRAM},
    {"BEGIN", TokenType.BEGIN}, 
    {"END", TokenType.END}, 
    {"FUNCTION", TokenType.FUNCTION}, 
    {"RETURNS", TokenType.RETURNS}, 
    {"DECLARE", TokenType.DECLARE}, 
    {"VAR", TokenType.VAR}, 
    {"AS", TokenType.AS}, 
    {"BREAK", TokenType.BREAK}, 
    {"IF", TokenType.IF}, 
    {"THEN", TokenType.THEN}, 
    {"ELSE", TokenType.ELSE},
    {"SWITCH", TokenType.SWITCH},
    {"CASE", TokenType.CASE},
    {"FOR", TokenType.FOR},
    {"WHILE", TokenType.WHILE}, 
    {"DO", TokenType.DO}, 
    {"LOOP",TokenType.LOOP}, 
    {"INPUT", TokenType.INPUT},
    {"OUT", TokenType.OUT}
};

public static String [] PalavrasReservadas_Tipos = {
    "INT", "STRING"
};

public TokenType tipo;
public String valor;
    
}
